/**
 * 
 */
package cn.biplam.front.template.control.pop;

import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.UserInfo;
import cn.biplam.front.html.HtmlDiv;
import cn.biplam.front.html.base.Html;
import cn.biplam.front.html.base.HtmlWindow;
import cn.biplam.front.template.Template;
import cn.biplam.front.template.control.pop.PopLevel.FramePrompt_Layer;
import cn.biplam.front.template.control.pop.PopLevel.Prompt_Layer;

/**
 * 系统输入框，独占窗口模式
 * @author 	WangSong
 * @create 	2009-4-15 下午04:12:26
 * @version 1.0
 */
public class Prompt implements Template{
	
	private String cssID="ab";
	private FramePrompt frame;
	private String ID;
	private UserInfo mUser;
	private HtmlWindow prompt;
	private Prompt_Layer promptLayer;

	private String sHomeUrl;
	
	/**
	 * 功能：构造方法
	 * @param ID		Confirm窗口绑定对象ID(外部Div)
	 * @param sHomeUrl	主页Url
	 * @param sTitle	标题
	 * @throws ErrorMessage 
	 */
	public Prompt(String ID,String sHomeUrl,UserInfo mUser,Prompt_Layer layer) throws ErrorMessage{
		this.ID=ID;
		this.sHomeUrl=sHomeUrl;
		this.mUser=mUser;
		this.promptLayer = layer;
		this._init();
	}
	
	/**
	 * 功能：
	 * @param sTitle
	 * @throws ErrorMessage
	 */
	private void _init() throws ErrorMessage{
		frame=new FramePrompt(ID+"f",sHomeUrl,mUser);
	}
	
	/**
	 * 功能：绑定Frame的确认按钮事件
	 * @param sScript	事件执行的js脚本
	 * @throws ErrorMessage
	 */
	public void bindSubmit(String sScript) throws ErrorMessage{
		this.frame.bindSubmit(sScript);
	}
	
	/**
	 * 功能：返回设置好的HtmlWindow对象
	 * @return
	 * @throws ErrorMessage 
	 */
	public HtmlWindow get() throws ErrorMessage{
		prompt=new HtmlDiv(ID,"pp");
		prompt.setZIndex(this.promptLayer.value);
		
		HtmlDiv content = new HtmlDiv(this.ID+"b",cssID);
		prompt.put(content);
		//标题
		frame.bindClose("fc('"+this.ID+"');");
		FramePrompt_Layer fLayer=  null;
		try{
			String sufic = this.promptLayer.name();
			fLayer = FramePrompt_Layer.valueOf(sufic);
		}catch(Exception e){
			e.printStackTrace();
			throw new ErrorMessage(e,"弹出窗口层次错误");
		}
		frame.setLayerIndex(fLayer);
		
		/**装入设置好的Frame*/
		prompt.put(frame.get());
		//设置第一载入时显示然后隐藏
		prompt.bind("$('"+this.ID+"').style.visibility='inherit';");
		prompt.bind("$('"+this.ID+"').style.visibility='hidden';");
		return this.prompt;
	}
	
	/**
	 * 功能：向Frame正文区域放入Html对象
	 * @param html
	 * @throws ErrorMessage
	 */
	public void put(Html html) throws ErrorMessage{
		this.frame.put(html);
	}
	
	/**
	 * 功能：向Frame容器放入Html对象
	 * @param html
	 * @throws ErrorMessage
	 */
	public void putFrame(Html html) throws ErrorMessage{
		this.frame.putFrame(html);
	}

	/**
	 * 功能：向Popup容器内放入Html对象
	 * @param html
	 * @throws ErrorMessage
	 */
	public void putPopup(Html html) throws ErrorMessage{
		this.prompt.put(html);
	}
	
	/**
	 * 设置背景cssID
	 * @param cssID
	 */
	protected void setCssID(String cssID) {
		this.cssID = cssID;
	}
	
	
}
